package n04;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Semester {
    private LocalDate firstMonday; // 学期第一周周一的日期

    // 构造方法1：根据学期第一周周一的日期构造学期对象
    public Semester(String firstMonday) {
    	DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-M-d");
        this.firstMonday = LocalDate.parse(firstMonday, f);
    }

    // 构造方法2：根据当前是学期的第几周来构造学期对象
    public Semester(int currentWeek) {
        // 获取当前日期
        LocalDate today = LocalDate.now();
        // 找到当前周的周一
        int w = today.getDayOfWeek().getValue();//1 (Monday) to 7 (Sunday).今天是星期几
        LocalDate currentMonday=today.minusDays(w-1);//同一周周一的日期
//        LocalDate currentMonday = today.with(TemporalAdjusters.previousOrSame(java.time.DayOfWeek.MONDAY));
        // 计算学期第一周周一的日期
        this.firstMonday = currentMonday.minusWeeks(currentWeek - 1);
    }

    // 获取学期第一周周一的日期
    public LocalDate getFirstMonday() {
        return firstMonday;
    }

    public String getBeijingTime() {
    	// 获取当前系统时间
        LocalDateTime now = LocalDateTime.now();

        // 定义格式化器
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("北京时间：yyyy年MM月dd日 HH:mm:ss");

        // 格式化日期和时间
        String formattedTime = now.format(formatter);

        // 获取星期几
        int w=now.getDayOfWeek().getValue()-1;//0-周一，6-周日
        String xq="星期"+"一二三四五六日".charAt(w);
        // 拼接最终结果
        return formattedTime + " " + xq;
    }

    public static void main(String[] args) {
        // 测试构造方法1
        Semester semester1 = new Semester("2025-2-17");
        System.out.println("根据第一周周一日期构造的学期对象: " + semester1.getFirstMonday());

        // 测试构造方法2
        Semester semester2 = new Semester(5); // 假设当前是学期的第4周
        System.out.println("根据当前周数构造的学期对象: " + semester2.getFirstMonday());
        
        System.out.println(semester1.getBeijingTime());
        
    }
}